package com.tpshion.cloud.auth.service;

import com.github.pagehelper.PageInfo;
import com.tpshion.cloud.auth.domain.dto.AddUserDto;
import com.tpshion.cloud.auth.domain.dto.EditUserDto;
import com.tpshion.cloud.auth.domain.dto.QueryUserDto;
import com.tpshion.cloud.auth.domain.dto.RegisterDto;
import com.tpshion.cloud.auth.domain.entity.Permission;
import com.tpshion.cloud.auth.domain.entity.User;
import com.tpshion.cloud.auth.domain.vo.MenuVo;
import com.tpshion.cloud.auth.domain.vo.UserDetailVo;
import com.tpshion.cloud.common.support.Result;
import java.util.List;

public interface UserService {

    /**
     * 使用账号登录
     * @param account
     * @param password
     * @return
     */
    Result loginByAccount(String account, String password);

    /**
     * 使用手机号登录
     * @param phone
     * @param password
     * @return
     */
    Result loginByPhone(String phone, String password);

    /**
     * 使用邮箱登录
     * @param email
     * @param password
     * @return
     */
    Result loginByEmail(String email, String password);

    /**
     * 注册用户
     * @param registerDto
     * @return
     */
    Result register(RegisterDto registerDto);

    /**
     * 查询用户权限
     * @param userId
     * @return
     */
    List<Permission> findPermission(String userId);

    /**
     * 根据用户id获取用户信息
     * @param userId 用户id
     * @return
     */
    User getUserInfo(String userId);

    /**
     * 分页查询用户信息
     * @param queryUserDto 查询数据
     * @return
     */
    PageInfo getUserList(QueryUserDto queryUserDto);

    /**
     * 根据用户id获取用户菜单树
     * @param userId 用户id
     * @param sysCode 系统码
     * @return
     */
    MenuVo getMenuTree(String userId, String sysCode);

    UserDetailVo addUser(AddUserDto addUserDto);

    UserDetailVo editUser(EditUserDto editUserDto);
}
